Guess 2/3 of the Average is a classic game-theory exercise. This post adapts it into a blockchain-based dApp. The basic rules are:
Reward rules:
A key question is how many players are in a round—i.e., when does a round end? The ending rule is:
Additional rules:
Those are all the rules.
The ending rule is a bit involved, so here’s an example. Suppose a player is the n = 50-th entrant and x = 10. The boundary becomes l, r = 45, 55. A new random number is picked in [45, 55]; if it happens to be 50, the round ends.
Why do this? Because blockchain data are public. In the original game, every choice is hidden, which is hard to replicate on-chain. The dApp version therefore differs in two main ways:
Both changes stem from on-chain transparency, so randomness must be added. Without a random ending, later players would always have an advantage by seeing earlier entries.
Of course, the last player cannot always overturn the result, especially with an upper cap, but if the player count is random there is no guaranteed “last” player—no one knows when the round will stop. Even someone rich enough to swing the average could be overtaken instantly.
The original game required integer inputs; the dApp version lifts that restriction because a smart contract can handle arbitrary precision.
Its effect is to make a round end, in most cases, when the player count falls in **[10, 100]**—the range set by x in rule 9.
Think of it this way: every user has a random chance to end the round, between 1⁄10 and 1⁄100. If the chance were 1⁄10, a round would typically end after about 10 players; if 1⁄100, after about 100 players. Thus x roughly limits the player count. (The [10, 100] range is approximate, not an exact calculation.)
Using this rule, I simulated 100 000 rounds and recorded the player count at which each ended. Code: guessavg/emulate_tool
The horizontal axis is player count; the vertical axis is how many times a round ended at that count. Near 1, there are 2 500 occurrences—i.e., 2.5 % of rounds ended after a single player.
If raw counts feel abstract, see the ratio chart: no single count exceeds 2.5 %. Early positions have higher odds because every round starts from zero.
This ratio view is clearer: about 20 % of rounds end with fewer than 10 players, ~70 % within [10, 100], and only 0.07 % need more than 300 players.
Although the distribution is not perfectly normal, it meets the goal: rounds finish at random yet reasonable times, avoiding too-few or too-many participants while still allowing a small chance (up to ~500 players).
I believe this is a sound design.
Over a year ago I wrote “‘Guess 2/3 of the Average’ dApp Game Design”.
Thanks to modern ChatGPT, implementing the game is now easy; contract and front-end are quick to build. I spent only two hours today to create a demo page.
Play here: https://guessavg.oiia.network/
Some notes:
0x6eb07...BA8F1
0x1bfb2...10936
fdf0aec857f3ac4fe146e0d00fb3a7a729646a081719df3f4e168a541a21893b
Oiia Network shut down today because I no longer wish to fund an unused chain. The demo has moved to Base.
0x4BbeE...868D2